/*
 * @Descripttion: 函数柯里化
 * @version: 1.0.0
 * @Author: 某人
 * @Date: 2021-05-14 11:20:14
 */
// 其实就是将使用多个参数的函数转换成一系列使用一个参数的函数的技术
// 使函数从一次调用传入多个参数变成多次调用每次传一个参数
function add(a, b, c) {
  return a + b + c
}
// add(1, 2, 3)
let addCurry = curry(add)
addCurry(2)(3)(4)
function curry(fn) {
  let judge = (...args) => {
    if (args.length === fn.length) return fn(...args)
    return (...arg) => judge(...args, ...arg)
  }
  return judge
}
